SET_PT_REGS(pt, ctxt.cpu_ctxt);
memcpy(data, &pt, sizeof(elf_gregset_t));
} else if (request == PTRACE_GETFPREGS)
- memcpy(data, &ctxt.fpu_ctxt, sizeof(elf_fpregset_t));
+ memcpy(data, &ctxt.fpu_ctxt, sizeof(ctxt.fpu_ctxt));
else /*if (request == PTRACE_GETFPXREGS)*/
- memcpy(data, &ctxt.fpu_ctxt, sizeof(elf_fpxregset_t));
+ memcpy(data, &ctxt.fpu_ctxt, sizeof(ctxt.fpu_ctxt));
cr3 = ctxt.pt_base;
regs_valid = 1;
break;
{
int eax, ecx;
+#ifdef __i386__
__asm__ __volatile__ ("pushl %%ebx; cpuid; popl %%ebx"
: "=a" (eax), "=c" (ecx)
: "0" (1)
: "dx");
+#elif defined __x86_64__
+ __asm__ __volatile__ ("pushq %%rbx; cpuid; popq %%rbx"
+ : "=a" (eax), "=c" (ecx)
+ : "0" (1)
+ : "dx");
+#endif
+
if (!(ecx & VMX_FEATURE_FLAG)) {
return -1;
}